203. 移除链表元素

https://leetcode.cn/problems/remove-linked-list-elements/description/?orderBy=most_votes&languageTags=c
给你一个链表的头节点 head 和一个整数 val ，请你删除链表中所有满足 Node.val == val 的节点，并返回 新的头节点 。
struct ListNode* removeElements(struct ListNode* head, int val)
{
    struct ListNode* tail = NULL;
    struct ListNode* cur = head;
    struct ListNode* newhead = NULL;
    while (cur)
    {
        if (cur->val != val)//尾插
        {
            if (tail == NULL)
            {
                tail=newhead = cur;
            }
            else
            {
                tail->next = cur;
                tail = tail->next;
            }
            cur=cur->next;
            tail->next=NULL;
        }
        else
        {
            struct ListNode*del=cur->next;
            free(cur);
            cur = del;
        }
    }
    return newhead;
}